"""标识符的命名规则：
    * 只能由数字、字母、下划线构成
    * 不能用数字开头
    * 不能使用内置关键字
    * 大小写敏感，区分大消息
"""
"""
如何将一个类似自定的字符串，转化成字典格式？
"""
str1 = "{'key1':'1','key2':'2','key3':'3'}"
str2 = eval(str1)
print(str2)
print(type(str1))
print(type(str2))

"""
格式化输出中，字符串和数值对应的 格式符号、
    %s：字符串
    %d：整数
    %f：浮点数
"""
name1 = "小丽"
age1 = 18
height1 = 165.8888

print("注意看，这个女孩叫：%s，她的年龄是：%d，身高：%.1f" % (name1, age1, height1))

"""f表达式"""
print(f"注意看，这个女孩叫：{name1}，她的年龄是：{age1}，身高：{height1:.1f}")

"""
如何自定义print的默认结束符？
"""
print("这是自定义结束符",end="。")
print("这是默认结束符\n")


"""
input输入
"""

# print(input("请在下方控制台输入你的年龄：\n"))

"""
可变数据类型和不可变数据类型
    可变数据类型：
        列表、集合、字典
    不可变数据类型：
        整数、字符串、浮点数、元组、布尔
"""
# 可变数据类型
list1 = [1,2,"哈哈"]
set1 = {"1,2,3,1"}
dict1 = {"dic1":"1","dic2":"2","dic3":"3"}
print(type(list1))
print(type(set1))
print(type(dict1))


# 不可变数据类型
int1 = 1,12,3,4,5,6
folat1 = 2.33
str1 = "qwer"
bool1 = True
tpule1 = (1,2,3)

print(type(int1))
print(type(folat1))
print(type(bool1))
print(type(tpule1))
int2 = int1,1
print(int2)
print(int1)

"""
如何给多变量赋相同值？
"""

a = b = 1
print(a)
print(b)

"""
如何一次给多变量赋值？
"""

aa, bb = 11, 22
print(aa)
print(bb)

"""
字符串中出现了转译字符，其不想让转义字符生效
"""
# 字符串前面添加r
str11 = r"asdfds\t"
#转译字符前面添加\
str2 = "asdfds\\t"
print(str11)
print(str2)

"""
下标/索引是从几开始的？
    从0 开始的
下标为1的元素是第几个？
-1是第几个？
-0是第几个？
"""
list1 = [1,2,3,4,5]
# 下标是从0开始的
print(list1[0])
# 下标为1的元素是第二个
print(list1[1])
# -1是最后一个
print(list1[-1])
# 下标-0是第一个
print(list1[-0])

"""
哪些素具类型支持切片操作？
切片的注意事项有哪些？
"""

list1 = ["哈哈", 1, 3, 6]
tuple1 = (1, 2, 3, 4, 5)
str12 = "qwert"

print(str12)

r1 = ["aa",11,34,5,6,11,23,11,22,56,11,78]
print(type(r1))
# 查找元素在列表内的下标
print(r1.index(5))
# 查看出现次数
print(r1.count(11))
# 查看列表的个数
print(len(r1))
# 判断元素是否在列表内
print(11 in r1)     # True
print(12 in r1)     # False
if 111 in r1:
    print(True)
else:
    print(False)

# 将列表内的字典排序
l1 = [{'d1': '1'}, {'d2': '2'}, {'d3': '3'}, {'d4': '4'}]
l1.sort(key=lambda x: sorted(x.keys())[0], reverse=False)
print(l1)


l2 = [{'name': '小丽', 'age': '18', 'sex': '女'}, {'name': '小含', 'age': '18.5', 'sex': '女'}]
l2.sort(key=lambda x: x["name"], reverse=True)
print(l2)